package com.winsomely.leecode;

/**
 * 找出最大子序和
 * 
 * @author liujiawei
 *
 */
public class MaxSubArray {

	private int doSum(int[] nums, int b, int sub) {
		int sum = 0;
		int e = b + sub;
		for (int i = b; i < e; i++) {
			sum += nums[i];
		}
		System.out.println(sum);
		return sum;
	}

	// public int maxSubArray(int[] nums) {
	// if (nums.length == 1) {
	// return nums[0];
	// }
	// Integer maxSum = null;
	// int sub = 1;
	// while (sub <= nums.length) {
	// int b = 0;
	// do {
	// int sum = this.doSum(nums, b, sub);
	// maxSum = maxSum == null || maxSum < sum ? sum : maxSum;
	// b++;
	// } while ((b + sub) <= nums.length);
	// sub++;
	// }
	// return maxSum;
	// }

	public int maxSubArray(int[] nums) {
		int pre = 0;
		int max = nums[0];
		for (int n : nums) {
			pre = Math.max(n + pre, n);
			max = Math.max(pre, max);
		}
		return max;
	}

	public static void main(String[] args) {
		MaxSubArray t = new MaxSubArray();
		int[] nums = { 1, 2 };
		int sum = t.maxSubArray(nums);
		System.out.println("------------");
		System.out.println(sum);
	}

}
